package hehe.container.format;


import hehe.container.build.annotation.Format;
import hehe.container.util.ReflectUtil;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

/**
 * Map类型转换
 *<B>说明：</B>
 *<pre>
 * 略
 *</pre>
 *<B>示例：</B>
 *<pre>
 *  略
 *</pre>
 *<B>日志：</B>
 *<pre>
 *  略
 *</pre>
 *<B>注意事项：</B>
 *<pre>
 *  略
 *</pre>
 */

@Format(
        dataFormat="MapFormat",
        formatTypes={"java.util.Map","Map"},
        formatArgs={Map.class,Field.class}
)
public class MapFormat extends DataFormat
{
    public static Object parse(Map<String,Object> values, Field field)
    {
        String valueType = ReflectUtil.getFieldType(field,1);
        Map<String,Object> attrValue = new HashMap<>();
        Object formatValue;

        for (Map.Entry<String, Object> value : values.entrySet()) {
            try {
                formatValue = DataFormat.invoke(valueType,value.getValue(),field);
                attrValue.put(value.getKey(),formatValue);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return attrValue;
    }
}
